274. github action建立 self-host runner

WHY

最近這幾天最大的消息,
應該算是Nginx-ingress controller 出現重大漏洞。
不知道的可以看文章
又翻了一下漏洞產生的原因IngressNightmare: 9.8 Critical Unauthenticated Remote Code Execution Vulnerabilities in Ingress NGINX
所幸,本來就是Private Cluster,但API那層的Public Endpoints沒檔,
一檔下去,換前端的Github actions無法部屬,但Github的IP名單太多了,只好想其他方式。

Solution

本來想了好幾種方式,但不是因為太複雜就是沒辦法做(時間不允許)。
後來想到github action的自建runner,
在本地機房建個 runner,部屬時改用這個runner去執行,
那GKE的allow IP就不用再額外增加了。

建置Runner

建立方式,github 說明文件

簡單流程,就是到設定開啟action 的runner選單,再點選New Runner ,
選擇 Self-hosted runner,設定好後會看到機器呈現Idle的狀態。
274-fig.1.png
274-fig.2.png

進去後,照著上面的指令執行即可(記得選對平台及Architecture)。

設定完後,最後有一行執行的指令
./run.sh
這邊建議修改一下,
如果你是ssh進去Linux機器,那當你斷掉連線這個指令就會失效了。

所以要改用

nohup ./run.sh > runner.log 2>&1 &

當關閉ssh後指令仍可執行。

如果要變成系統服務的話,避免重開機後,還要重下指令,
建議用systemd的方式。

修改github action

開啟.github/workflows的資料夾,看裡面哪些流程要改用自架的機器。

本來是 runs-on: ubuntu-latest ,這個是github預設的runner
改成 runs-on: self-hosted

ref.